import os
import asyncio

from env import get_app_root
import hashlib
import pyttsx3

_OUTPUT_DIR = os.path.join(get_app_root(), "data/cache/audio")

# 如果文件夹路径不存在，先创建
if not os.path.exists(_OUTPUT_DIR):
    os.makedirs(_OUTPUT_DIR)


def get_file_path(text):
    file_name = hashlib.sha256(text.encode("utf-8")).hexdigest()
    return os.path.join(_OUTPUT_DIR, f"{file_name}.mp3")

def audio_generate_pyttsx3(text: str) -> str:
    try:
        if not text or text.strip() == "":
            raise ValueError("文本不能为空")
        else:print(text)

        _output_file = get_file_path(text)  # 假设这是一个生成路径的函数
        print(_output_file)
        engine = pyttsx3.init()  # 初始化语音引擎
        engine.save_to_file(text, _output_file)  # 直接生成语音文件
        print("save to file")
        engine.runAndWait()  # 等待任务完成
        return _output_file
    except ValueError as ve:
        print(f"错误: {ve}")
        return ""
    except Exception as e:
        print(f"发生了意外错误: {e}")
        return ""